/**
 * Description:
 * Class Name:TypeAnnotationTest
 * Date:2022/4/24 13:00
 *
 * @author LTisme
 * @version JAVA17
 */
package 疯狂Java讲义.第14章_Annotation注解._14_3_自定义注解._14_3_5_类型注解;

import java.io.FileNotFoundException;
import java.io.Serializable;
import java.lang.annotation.ElementType;
import java.lang.annotation.Target;
import java.util.List;

// 定义一个简单的类型注解，不带任何成员变量
@Target(ElementType.TYPE_USE)
@interface NotNull{}

// 定义类时使用类型注解
@NotNull
public class TypeAnnotationTest implements @NotNull /* implements 时，使用类型注解 */ Serializable {
    // 方法形参中使用类型注解
    public static void main(@NotNull String[] args)
    // throws时使用类型注解
    throws @NotNull FileNotFoundException
    {
        Object obj = "Crazy Java";
        // 强制类型转换时使用类型注解
        String str = (@NotNull String) obj;
        // 创建对象时使用类型注解
        Object win = new @NotNull String("Good Job!");
    }
    // 泛型中使用类型注解
    public void foo(List<@NotNull ?> info){}
}
